The present disclosure relates generally to file access, and, in particular, to methods, computer program products, and apparatuses for providing remote client access to exported file systems in a distributed computing environment.
In a generalized computing environment, applications may access stored data via a set of operating system services including a file system. A file system includes a set of stored files and program tools for maintaining the set of files. File systems that control the physical representation of objects, such directories and files, are known as physical file systems (PFSs). Also included in a generalized computing environment is a kernel that performs basic functions, such as allocating hardware. The kernel is a central part of many computer operating systems and manages the system's resources and the communication between hardware and software components. As a basic component of an operating system, a kernel provides abstraction layers for hardware that allow hardware and software to communicate.
A logical file system (LFS) is the level of the file system at which users can request file operations using a system call. The LFS provides the kernel with a consistent view of what may be multiple physical file systems and multiple file system implementations. A consistent view of file system implementation is made possible by a virtual file system (VFS). This virtual file system is an abstraction of a physical file system implementation. It provides a consistent interface to multiple file systems, both local and remote. The interface allows the LFS code in the kernel to operate without regard to the type of file system being accessed. Each time a file is opened or made accessible, the file system creates a data structure, known as a “vnode”, which is chained to the VFS. A vnode is an abstract representation of an active file and provides a generic way to operate on the real file it represents, regardless of the file system it resides on.
In a distributed computing environment, a number of computing systems are operatively coupled to a communication network and can share files by way of a distributed file system. An example of a distributed computing system is a server-client system in which one or more remote client devices are serviced by one or more server devices. The server devices control access by the client devices to storage devices containing file system data. A file exporter running on the server provides data to remote clients which are operatively coupled to the file exporter. Access for locally exported file system data may be referred to as local access, while access for remotely exported file system data may be referred to as remote access. When a file server obtains data to fulfill a remote client's request for data, a cache manager process in the kernel of the file server caches a copy of the data. As long as the data does not change, the locally cached copy remains available to the remote client. A new copy is retrieved only when another process changes the cached data.
In addition to remote clients, which are external to but connected to the distributed file system, there are applications which are executed using a file system in the distributed computing environment. Data requests by applications are handled differently from requests from remote clients. To understand how data requests from applications are handled, consider a sysplex, which is a system of computer mainframes acting together as a distributed file system. In a traditional sysplex, an application request is received by the LFS, and the LFS forwards the request to the PFS which owns the corresponding file system to obtain the requested data. PFS owns the file system while the file server owns the export. When PFS is sysplex-aware, PFS performs the forwarding itself, obtaining data from a PFS cache, a remote PFS, or a storage device, if the data exists. As for the file server, when the request is from an application, a local glue (G2) routine or program communicates with an owning export glue (G1) routine or program to coordinate the application access. So in a sysplex-aware PFS, there can be one file server exporting all file systems across the sysplex regardless of who owns them. If there is more than one server running, they need to export different file systems. Additionally, with a sysplex-aware PFS, the concept of file system owner effectively disappears because the PFS supplies data from the cache regardless of who owns it. However, the remote clients still need to know who exported the file system and can only access the data exported by the local file server (i.e., the file server to which the remote client is connected). The token manager on each file server distributes tokens to allow access to data from the file server on behalf of remote clients or to allow access to PFS data by the LFS. The token manager uses tokens to manage access to data and metadata. The tokens guarantee that applications are provided with the most recent version of the data and that multiple applications are not accessing the same data in a conflicting manner.
As for remote clients, when a remote client wishes to access or change a file or directory that is managed by the file exporter, a file server to which the remote client is connected obtains tokens on behalf of the remote client as needed for a given operation. The file server may request the appropriate tokens for the data from the token manager. The token manager's response to the request depends on the data the client wants to manipulate, the operation the client wants to perform on the data, and whether any other clients currently have tokens for the data. If neither the LFS nor other clients have tokens for the data, the token manager can issue the remote client the appropriate tokens. If outstanding tokens for the data exist, the token manager can grant the request (if no conflicts arise between the request and the outstanding tokens), revoke the existing tokens to grant the request, or consider the request pending until it can grant it. In some cases, the token manager simply refuses to grant the request. If the token manager gives the client the necessary tokens, the client in turn can access the data from the file exporter in the manner requested.
In current distributed computing environments, remote clients can only access file systems on the system owning the export. For example, in a traditional sysplex, a file server only exports the file systems owned by the sysplex that the file server is running on, i.e., the file system to which it has direct access. As a result, remote clients need to know which logical partition (LPAR) owns the export for the file system before connecting to a network drive. This is because file servers do not communicate with each other and therefore cannot coordinate a plurality of remote clients accessing the same file or files. Moreover, in situations where a file system has been exported by another file server, the remote clients cannot access files across mount points of the file system.
In order to provide remote clients with access to exported file systems, a system administrator can set up a single file server with all exports or multiple file servers with different exports. For the single file server, remote clients can access exported file systems by connecting to that single system. This approach is adequate until the system goes down, whereupon all access to exported file systems is lost. For multiple client servers, a remote client needs to know which system owns the exported file system because, if the system owning the exported file system is down, the remote client will not be able to access this file system.
In view of the foregoing considerations, there is a need to improve remote client access to exported file systems in distributed computing environments.